package field

import (
    {{.time}}
)

//
// {{.ClassName}}
// @Description: {{.Description}}
//
type {{.ClassName}} struct {
{{- range $name, $property := .Properties}}
    {{$property.UpperName}} {{if $property.IsArray}}[]{{if $property.IsObjectType}}*{{end}}{{end}}{{$property.LanType}} `{{$property.GoTags}} description:"{{$property.Description}}"` {{$property.GoDescription}}
{{- end}}
}

//
// {{.Name}}Metadata
// @Description:  {{.Description}} 元数据
//
type {{.Name}}Metadata struct {
{{- range $name, $property := .Properties }}
    {{$property.UpperName}}  metadata.Property `json:"-"`
{{- end }}
	Properties  metadata.Properties `json:"properties"`
}

var (
    // 元数据
    _{{.name}}Metadata = new{{.Name}}Metadata()
)

//
// new{{.ClassName}}Metadata
// @Description: 新建{{.Description}}元数据
// @return *{{.ClassName}}Metadata
//
func new{{.Name}}Metadata() *{{.Name}}Metadata {
	v := &{{.Name}}{}
	m := &{{.Name}}Metadata{}
    if err := metadata.InitMetadata(m, v); err != nil {
        panic(err)
    }
	return m
}

//
// Get{{.Name}}Metadata
// @Description: 获取{{.Description}}元数据
// @return *{{.Name}}Metadata
//
func Get{{.Name}}Metadata() *{{.Name}}Metadata {
    return _{{.name}}Metadata
}


{{- if not .IsItems }}
func (f *{{.ClassName}}) GetId() string {
    return f.Id
}

func (f *{{.ClassName}}) SetId(v string)  {
    f.Id = v
}

func (f *{{.ClassName}}) GetTenantId() string {
    return f.TenantId
}

func (f *{{.ClassName}}) SetTenantId(v string) {
    f.TenantId = v
}

{{- else }}

func (f *{{.ClassName}}) GetIds() []string {
    var ids []string
    ids =[]string{}
    for _, item := range f.Items {
        ids = append(ids, item.GetId())
    }
    return ids
}
{{- end }}